home *** CD-ROM | disk | FTP | other *** search
- What's sub-problems I coded within swsubst:
- + mkdir.c: mkdir -p {path}: makes the directory including path to it
- + subst: switchSubst(): handle CDS entries through DOS3..DOS6
- + cds.c: access to the List of List via inline assembly
- + drive.c: getDrvName(): convert physical drive number => driver name
- + drive.c: name2drv(): search the n'th drive driven by the driver with the name XXX
- + drive.c: searchLabel():search all physical drives for a drive labeled XXX (via findfirst())
- + drive.c: Drive(): strip a leading drive spec & return its (int) presence (all above && normal drive specs)
- + swsubst.c: new_int24(): disable critical errors by always returning FAIL to the system
- + swsubst.c: main(): compact multiple similar functionality within one program
- + set.c: drvSetting(): direct manipulating of the drive flags, set/reset flags; turn drive ON/OFF
-
- Known Bugs:
- + The inline assembly in cds.c works; if the C code, I don't know.
- + Sometimes manipulating seems meaningless; the system locks up or
- emits mystic errors. Well, they come when I tried something, what's
- not possible with DOS's standard tools, but what should work by all
- documentation I have. (I never had a system crash with data lost.)
- + The part of main(), where I start the switchSubst(), is somewhat
- mystic. That's because that was the place where everything begun!
- + To turn a drive OFF is relativly simple; but re-enabling is aweful, because
- there is nowhere the information, what SHOULD be on this drive. It works
- OK for unused entries, local HD's und FD's; sometimes for device
- driven drives; but seldom for CD-ROMs (networked drives).
- + Works only on MS-DOS like CDS. But does not check, if it's running on
- MS-DOS. (DR-DOS has a very different CDS.)
- + The program does very little checking for valid operations; therefore,
- play around a bit, before you try to do serious things with non-DOS-
- standard functions.
- + Becæuse I enabled to use logical & physical paths, sometimes the same
- path is interpreted both physically and logically. That *can* be useful.
- But normally this results rubish.
- + The DOS-standard emulating entities of swsubst, SUBST and JOIN, have the
- same command line as DOS's have. But they differ in the following points:
- ++ The specified path will be make'ed, including the full path to it,
- e.g. "SUBST c: d:/blah/humpf"
- creates the path "d:\blah\humpf", regardless if d:\blah exists.
- ++ You are allowed to break off relations on the fly, that means:
- an already SUBST'ed can be re-SUBST'ed or re-JOIN'ed without
- further note/warning.
- ++ You are allowed to process a drive with itself,
- e.g.: "JOIN a: a:\blah"
- ++ The table dump is different, swsubst prints "X: => Y:\PATH" instead
- of "X: is joined to Y:\PATH".
- ++ You cannot rename the executables SUBST and JOIN.
- ++ It won't test the DOS version, unless it's necessary for adjusting
- different data structure sizes.
-
-
-
- What I'm still looking for:
- + How to trick a networked drive (e.g. CD-ROM) of it's drive letter,
- e.g. for swapping.
- + How to flush DOS internal BUFFERs in that way, that a) non-Written
- data is written (flush dirty BUFFERs); and b) mark them unused.
- That's *maybe* one problem, because DOS's BUFFERs may contain data
- about a drive, which is now somewhere else & was replaced by another.
- I trecked DOS a bit, but couldn't found something, what's look like
- that functionality.
- + What's the HIDDEN flag for?
-